/**
 */
package de.thwildau.tm.moses.asn1.asn1.util;

import de.thwildau.tm.moses.asn1.asn1.*;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see de.thwildau.tm.moses.asn1.asn1.Asn1Package
 * @generated
 */
public class Asn1Switch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static Asn1Package modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Asn1Switch()
  {
    if (modelPackage == null)
    {
      modelPackage = Asn1Package.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @parameter ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case Asn1Package.ASN1:
      {
        Asn1 asn1 = (Asn1)theEObject;
        T result = caseAsn1(asn1);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.MODULE_DEFINITION:
      {
        ModuleDefinition moduleDefinition = (ModuleDefinition)theEObject;
        T result = caseModuleDefinition(moduleDefinition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.MODULE_IDENTIFIER:
      {
        ModuleIdentifier moduleIdentifier = (ModuleIdentifier)theEObject;
        T result = caseModuleIdentifier(moduleIdentifier);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ENCODING_REFERENCE_DEFAULT:
      {
        EncodingReferenceDefault encodingReferenceDefault = (EncodingReferenceDefault)theEObject;
        T result = caseEncodingReferenceDefault(encodingReferenceDefault);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.MODULE_BODY:
      {
        ModuleBody moduleBody = (ModuleBody)theEObject;
        T result = caseModuleBody(moduleBody);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXPORTS:
      {
        Exports exports = (Exports)theEObject;
        T result = caseExports(exports);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.IMPORTS:
      {
        Imports imports = (Imports)theEObject;
        T result = caseImports(imports);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.DEFINED_TYPE:
      {
        DefinedType definedType = (DefinedType)theEObject;
        T result = caseDefinedType(definedType);
        if (result == null) result = caseReferencedType(definedType);
        if (result == null) result = caseType(definedType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.DEFINED_VALUE:
      {
        DefinedValue definedValue = (DefinedValue)theEObject;
        T result = caseDefinedValue(definedValue);
        if (result == null) result = caseReferencedValue(definedValue);
        if (result == null) result = caseObjIdComponents(definedValue);
        if (result == null) result = caseValue(definedValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ASSIGNMENT:
      {
        Assignment assignment = (Assignment)theEObject;
        T result = caseAssignment(assignment);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.TYPE_ASSIGNMENT:
      {
        TypeAssignment typeAssignment = (TypeAssignment)theEObject;
        T result = caseTypeAssignment(typeAssignment);
        if (result == null) result = caseAssignment(typeAssignment);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.VALUE_ASSIGNMENT:
      {
        ValueAssignment valueAssignment = (ValueAssignment)theEObject;
        T result = caseValueAssignment(valueAssignment);
        if (result == null) result = caseAssignment(valueAssignment);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SIMPLE_VALUE_ASSIGNMENT:
      {
        SimpleValueAssignment simpleValueAssignment = (SimpleValueAssignment)theEObject;
        T result = caseSimpleValueAssignment(simpleValueAssignment);
        if (result == null) result = caseValueAssignment(simpleValueAssignment);
        if (result == null) result = caseAssignment(simpleValueAssignment);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CHOICE_VALUE_ASSIGNMENT:
      {
        ChoiceValueAssignment choiceValueAssignment = (ChoiceValueAssignment)theEObject;
        T result = caseChoiceValueAssignment(choiceValueAssignment);
        if (result == null) result = caseValueAssignment(choiceValueAssignment);
        if (result == null) result = caseAssignment(choiceValueAssignment);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.OBJECT_IDENTIFIER_VALUE_ASSIGNMENT:
      {
        ObjectIdentifierValueAssignment objectIdentifierValueAssignment = (ObjectIdentifierValueAssignment)theEObject;
        T result = caseObjectIdentifierValueAssignment(objectIdentifierValueAssignment);
        if (result == null) result = caseValueAssignment(objectIdentifierValueAssignment);
        if (result == null) result = caseAssignment(objectIdentifierValueAssignment);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SEQUENCE_VALUE_ASSIGNMENT:
      {
        SequenceValueAssignment sequenceValueAssignment = (SequenceValueAssignment)theEObject;
        T result = caseSequenceValueAssignment(sequenceValueAssignment);
        if (result == null) result = caseValueAssignment(sequenceValueAssignment);
        if (result == null) result = caseAssignment(sequenceValueAssignment);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.TYPE:
      {
        Type type = (Type)theEObject;
        T result = caseType(type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.BUILTIN_TYPE:
      {
        BuiltinType builtinType = (BuiltinType)theEObject;
        T result = caseBuiltinType(builtinType);
        if (result == null) result = caseType(builtinType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SIMPLE_TYPE:
      {
        SimpleType simpleType = (SimpleType)theEObject;
        T result = caseSimpleType(simpleType);
        if (result == null) result = caseBuiltinType(simpleType);
        if (result == null) result = caseType(simpleType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CONTAINER_TYPE:
      {
        ContainerType containerType = (ContainerType)theEObject;
        T result = caseContainerType(containerType);
        if (result == null) result = caseBuiltinType(containerType);
        if (result == null) result = caseType(containerType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.REFERENCED_TYPE:
      {
        ReferencedType referencedType = (ReferencedType)theEObject;
        T result = caseReferencedType(referencedType);
        if (result == null) result = caseType(referencedType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.NAMED_TYPE:
      {
        NamedType namedType = (NamedType)theEObject;
        T result = caseNamedType(namedType);
        if (result == null) result = caseExtensionAdditionAlternative(namedType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.VALUE:
      {
        Value value = (Value)theEObject;
        T result = caseValue(value);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.BUILTIN_VALUE:
      {
        BuiltinValue builtinValue = (BuiltinValue)theEObject;
        T result = caseBuiltinValue(builtinValue);
        if (result == null) result = caseValue(builtinValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SIMPLE_VALUE:
      {
        SimpleValue simpleValue = (SimpleValue)theEObject;
        T result = caseSimpleValue(simpleValue);
        if (result == null) result = caseBuiltinValue(simpleValue);
        if (result == null) result = caseValue(simpleValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CONTAINER_VALUE:
      {
        ContainerValue containerValue = (ContainerValue)theEObject;
        T result = caseContainerValue(containerValue);
        if (result == null) result = caseBuiltinValue(containerValue);
        if (result == null) result = caseValue(containerValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.REFERENCED_VALUE:
      {
        ReferencedValue referencedValue = (ReferencedValue)theEObject;
        T result = caseReferencedValue(referencedValue);
        if (result == null) result = caseValue(referencedValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.NAMED_VALUE:
      {
        NamedValue namedValue = (NamedValue)theEObject;
        T result = caseNamedValue(namedValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.BOOLEAN_TYPE:
      {
        BooleanType booleanType = (BooleanType)theEObject;
        T result = caseBooleanType(booleanType);
        if (result == null) result = caseSimpleType(booleanType);
        if (result == null) result = caseBuiltinType(booleanType);
        if (result == null) result = caseType(booleanType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.BOOLEAN_VALUE:
      {
        BooleanValue booleanValue = (BooleanValue)theEObject;
        T result = caseBooleanValue(booleanValue);
        if (result == null) result = caseSimpleValue(booleanValue);
        if (result == null) result = caseBuiltinValue(booleanValue);
        if (result == null) result = caseValue(booleanValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.INTEGER_TYPE:
      {
        IntegerType integerType = (IntegerType)theEObject;
        T result = caseIntegerType(integerType);
        if (result == null) result = caseSimpleType(integerType);
        if (result == null) result = caseBuiltinType(integerType);
        if (result == null) result = caseType(integerType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.NAMED_NUMBER:
      {
        NamedNumber namedNumber = (NamedNumber)theEObject;
        T result = caseNamedNumber(namedNumber);
        if (result == null) result = caseObjIdComponents(namedNumber);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.INTEGER_VALUE:
      {
        IntegerValue integerValue = (IntegerValue)theEObject;
        T result = caseIntegerValue(integerValue);
        if (result == null) result = caseSimpleValue(integerValue);
        if (result == null) result = caseValueRangeValue(integerValue);
        if (result == null) result = caseBuiltinValue(integerValue);
        if (result == null) result = caseValue(integerValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ENUMERATED_TYPE:
      {
        EnumeratedType enumeratedType = (EnumeratedType)theEObject;
        T result = caseEnumeratedType(enumeratedType);
        if (result == null) result = caseSimpleType(enumeratedType);
        if (result == null) result = caseBuiltinType(enumeratedType);
        if (result == null) result = caseType(enumeratedType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ENUMERATION_ITEM:
      {
        EnumerationItem enumerationItem = (EnumerationItem)theEObject;
        T result = caseEnumerationItem(enumerationItem);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.REAL_TYPE:
      {
        RealType realType = (RealType)theEObject;
        T result = caseRealType(realType);
        if (result == null) result = caseSimpleType(realType);
        if (result == null) result = caseBuiltinType(realType);
        if (result == null) result = caseType(realType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.REAL_VALUE:
      {
        RealValue realValue = (RealValue)theEObject;
        T result = caseRealValue(realValue);
        if (result == null) result = caseSimpleValue(realValue);
        if (result == null) result = caseValueRangeValue(realValue);
        if (result == null) result = caseBuiltinValue(realValue);
        if (result == null) result = caseValue(realValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.NUMERIC_REAL_VALUE:
      {
        NumericRealValue numericRealValue = (NumericRealValue)theEObject;
        T result = caseNumericRealValue(numericRealValue);
        if (result == null) result = caseRealValue(numericRealValue);
        if (result == null) result = caseSimpleValue(numericRealValue);
        if (result == null) result = caseValueRangeValue(numericRealValue);
        if (result == null) result = caseBuiltinValue(numericRealValue);
        if (result == null) result = caseValue(numericRealValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.REAL_SEQUENCE_VALUE:
      {
        RealSequenceValue realSequenceValue = (RealSequenceValue)theEObject;
        T result = caseRealSequenceValue(realSequenceValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SPECIAL_REAL_VALUE:
      {
        SpecialRealValue specialRealValue = (SpecialRealValue)theEObject;
        T result = caseSpecialRealValue(specialRealValue);
        if (result == null) result = caseRealValue(specialRealValue);
        if (result == null) result = caseSimpleValue(specialRealValue);
        if (result == null) result = caseValueRangeValue(specialRealValue);
        if (result == null) result = caseBuiltinValue(specialRealValue);
        if (result == null) result = caseValue(specialRealValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.BIT_STRING_TYPE:
      {
        BitStringType bitStringType = (BitStringType)theEObject;
        T result = caseBitStringType(bitStringType);
        if (result == null) result = caseSimpleType(bitStringType);
        if (result == null) result = caseBuiltinType(bitStringType);
        if (result == null) result = caseType(bitStringType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.NAMED_BIT:
      {
        NamedBit namedBit = (NamedBit)theEObject;
        T result = caseNamedBit(namedBit);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.BIT_STRING_VALUE:
      {
        BitStringValue bitStringValue = (BitStringValue)theEObject;
        T result = caseBitStringValue(bitStringValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.OCTET_STRING_TYPE:
      {
        OctetStringType octetStringType = (OctetStringType)theEObject;
        T result = caseOctetStringType(octetStringType);
        if (result == null) result = caseSimpleType(octetStringType);
        if (result == null) result = caseBuiltinType(octetStringType);
        if (result == null) result = caseType(octetStringType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.OCTET_STRING_VALUE:
      {
        OctetStringValue octetStringValue = (OctetStringValue)theEObject;
        T result = caseOctetStringValue(octetStringValue);
        if (result == null) result = caseSimpleValue(octetStringValue);
        if (result == null) result = caseBuiltinValue(octetStringValue);
        if (result == null) result = caseValue(octetStringValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.NULL_TYPE:
      {
        NullType nullType = (NullType)theEObject;
        T result = caseNullType(nullType);
        if (result == null) result = caseSimpleType(nullType);
        if (result == null) result = caseBuiltinType(nullType);
        if (result == null) result = caseType(nullType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.NULL_VALUE:
      {
        NullValue nullValue = (NullValue)theEObject;
        T result = caseNullValue(nullValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SEQUENCE_TYPE:
      {
        SequenceType sequenceType = (SequenceType)theEObject;
        T result = caseSequenceType(sequenceType);
        if (result == null) result = caseContainerType(sequenceType);
        if (result == null) result = caseBuiltinType(sequenceType);
        if (result == null) result = caseType(sequenceType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXTENSION_AND_EXCEPTION:
      {
        ExtensionAndException extensionAndException = (ExtensionAndException)theEObject;
        T result = caseExtensionAndException(extensionAndException);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXTENSION_ADDITIONS:
      {
        ExtensionAdditions extensionAdditions = (ExtensionAdditions)theEObject;
        T result = caseExtensionAdditions(extensionAdditions);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.COMPONENT_TYPE_LIST:
      {
        ComponentTypeList componentTypeList = (ComponentTypeList)theEObject;
        T result = caseComponentTypeList(componentTypeList);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.VERSION_NUMBER:
      {
        VersionNumber versionNumber = (VersionNumber)theEObject;
        T result = caseVersionNumber(versionNumber);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXTENSION_ADDITION:
      {
        ExtensionAddition extensionAddition = (ExtensionAddition)theEObject;
        T result = caseExtensionAddition(extensionAddition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXTENSION_ADDITION_GROUP:
      {
        ExtensionAdditionGroup extensionAdditionGroup = (ExtensionAdditionGroup)theEObject;
        T result = caseExtensionAdditionGroup(extensionAdditionGroup);
        if (result == null) result = caseExtensionAddition(extensionAdditionGroup);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.COMPONENT_TYPE:
      {
        ComponentType componentType = (ComponentType)theEObject;
        T result = caseComponentType(componentType);
        if (result == null) result = caseExtensionAddition(componentType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.NAMED_COMPONENT_TYPE:
      {
        NamedComponentType namedComponentType = (NamedComponentType)theEObject;
        T result = caseNamedComponentType(namedComponentType);
        if (result == null) result = caseComponentType(namedComponentType);
        if (result == null) result = caseExtensionAddition(namedComponentType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.COMPONENT_OF_TYPE:
      {
        ComponentOfType componentOfType = (ComponentOfType)theEObject;
        T result = caseComponentOfType(componentOfType);
        if (result == null) result = caseComponentType(componentOfType);
        if (result == null) result = caseExtensionAddition(componentOfType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ANY_DEFINED_NAMED_TYPE:
      {
        AnyDefinedNamedType anyDefinedNamedType = (AnyDefinedNamedType)theEObject;
        T result = caseAnyDefinedNamedType(anyDefinedNamedType);
        if (result == null) result = caseComponentType(anyDefinedNamedType);
        if (result == null) result = caseExtensionAddition(anyDefinedNamedType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SEQUENCE_VALUE:
      {
        SequenceValue sequenceValue = (SequenceValue)theEObject;
        T result = caseSequenceValue(sequenceValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.COMPONENT_VALUE_LIST:
      {
        ComponentValueList componentValueList = (ComponentValueList)theEObject;
        T result = caseComponentValueList(componentValueList);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SEQUENCE_OF_TYPE:
      {
        SequenceOfType sequenceOfType = (SequenceOfType)theEObject;
        T result = caseSequenceOfType(sequenceOfType);
        if (result == null) result = caseContainerType(sequenceOfType);
        if (result == null) result = caseBuiltinType(sequenceOfType);
        if (result == null) result = caseType(sequenceOfType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SET_TYPE:
      {
        SetType setType = (SetType)theEObject;
        T result = caseSetType(setType);
        if (result == null) result = caseContainerType(setType);
        if (result == null) result = caseBuiltinType(setType);
        if (result == null) result = caseType(setType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SET_OF_TYPE:
      {
        SetOfType setOfType = (SetOfType)theEObject;
        T result = caseSetOfType(setOfType);
        if (result == null) result = caseContainerType(setOfType);
        if (result == null) result = caseBuiltinType(setOfType);
        if (result == null) result = caseType(setOfType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CHOICE_TYPE:
      {
        ChoiceType choiceType = (ChoiceType)theEObject;
        T result = caseChoiceType(choiceType);
        if (result == null) result = caseContainerType(choiceType);
        if (result == null) result = caseBuiltinType(choiceType);
        if (result == null) result = caseType(choiceType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ALTERNATIVE_TYPE_LIST:
      {
        AlternativeTypeList alternativeTypeList = (AlternativeTypeList)theEObject;
        T result = caseAlternativeTypeList(alternativeTypeList);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXTENSION_ADDITION_ALTERNATIVES_GROUP:
      {
        ExtensionAdditionAlternativesGroup extensionAdditionAlternativesGroup = (ExtensionAdditionAlternativesGroup)theEObject;
        T result = caseExtensionAdditionAlternativesGroup(extensionAdditionAlternativesGroup);
        if (result == null) result = caseExtensionAdditionAlternative(extensionAdditionAlternativesGroup);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXTENSION_ADDITION_ALTERNATIVE:
      {
        ExtensionAdditionAlternative extensionAdditionAlternative = (ExtensionAdditionAlternative)theEObject;
        T result = caseExtensionAdditionAlternative(extensionAdditionAlternative);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXTENSION_ADDITION_ALTERNATIVES_LIST:
      {
        ExtensionAdditionAlternativesList extensionAdditionAlternativesList = (ExtensionAdditionAlternativesList)theEObject;
        T result = caseExtensionAdditionAlternativesList(extensionAdditionAlternativesList);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CHOICE_VALUE:
      {
        ChoiceValue choiceValue = (ChoiceValue)theEObject;
        T result = caseChoiceValue(choiceValue);
        if (result == null) result = caseContainerValue(choiceValue);
        if (result == null) result = caseBuiltinValue(choiceValue);
        if (result == null) result = caseValue(choiceValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.PREFIXED_TYPE:
      {
        PrefixedType prefixedType = (PrefixedType)theEObject;
        T result = casePrefixedType(prefixedType);
        if (result == null) result = caseBuiltinType(prefixedType);
        if (result == null) result = caseType(prefixedType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.TAGGED_TYPE:
      {
        TaggedType taggedType = (TaggedType)theEObject;
        T result = caseTaggedType(taggedType);
        if (result == null) result = casePrefixedType(taggedType);
        if (result == null) result = caseBuiltinType(taggedType);
        if (result == null) result = caseType(taggedType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.TAG:
      {
        Tag tag = (Tag)theEObject;
        T result = caseTag(tag);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CLASS_NUMBER:
      {
        ClassNumber classNumber = (ClassNumber)theEObject;
        T result = caseClassNumber(classNumber);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.OBJECT_IDENTIFIER_TYPE:
      {
        ObjectIdentifierType objectIdentifierType = (ObjectIdentifierType)theEObject;
        T result = caseObjectIdentifierType(objectIdentifierType);
        if (result == null) result = caseSimpleType(objectIdentifierType);
        if (result == null) result = caseBuiltinType(objectIdentifierType);
        if (result == null) result = caseType(objectIdentifierType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.OBJECT_IDENTIFIER_VALUE:
      {
        ObjectIdentifierValue objectIdentifierValue = (ObjectIdentifierValue)theEObject;
        T result = caseObjectIdentifierValue(objectIdentifierValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.OBJ_ID_COMPONENTS:
      {
        ObjIdComponents objIdComponents = (ObjIdComponents)theEObject;
        T result = caseObjIdComponents(objIdComponents);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.TIME_TYPE:
      {
        TimeType timeType = (TimeType)theEObject;
        T result = caseTimeType(timeType);
        if (result == null) result = caseSimpleType(timeType);
        if (result == null) result = caseBuiltinType(timeType);
        if (result == null) result = caseType(timeType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.DATE_TYPE:
      {
        DateType dateType = (DateType)theEObject;
        T result = caseDateType(dateType);
        if (result == null) result = caseSimpleType(dateType);
        if (result == null) result = caseBuiltinType(dateType);
        if (result == null) result = caseType(dateType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.TIME_OF_DAY_TYPE:
      {
        TimeOfDayType timeOfDayType = (TimeOfDayType)theEObject;
        T result = caseTimeOfDayType(timeOfDayType);
        if (result == null) result = caseSimpleType(timeOfDayType);
        if (result == null) result = caseBuiltinType(timeOfDayType);
        if (result == null) result = caseType(timeOfDayType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.DATE_TIME_TYPE:
      {
        DateTimeType dateTimeType = (DateTimeType)theEObject;
        T result = caseDateTimeType(dateTimeType);
        if (result == null) result = caseSimpleType(dateTimeType);
        if (result == null) result = caseBuiltinType(dateTimeType);
        if (result == null) result = caseType(dateTimeType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.DURATION_TYPE:
      {
        DurationType durationType = (DurationType)theEObject;
        T result = caseDurationType(durationType);
        if (result == null) result = caseSimpleType(durationType);
        if (result == null) result = caseBuiltinType(durationType);
        if (result == null) result = caseType(durationType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CHARACTER_STRING_TYPE:
      {
        CharacterStringType characterStringType = (CharacterStringType)theEObject;
        T result = caseCharacterStringType(characterStringType);
        if (result == null) result = caseSimpleType(characterStringType);
        if (result == null) result = caseBuiltinType(characterStringType);
        if (result == null) result = caseType(characterStringType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CHARACTER_STRING_VALUE:
      {
        CharacterStringValue characterStringValue = (CharacterStringValue)theEObject;
        T result = caseCharacterStringValue(characterStringValue);
        if (result == null) result = caseSimpleValue(characterStringValue);
        if (result == null) result = caseBuiltinValue(characterStringValue);
        if (result == null) result = caseValue(characterStringValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.RESTRICTED_CHARACTER_STRING_TYPE:
      {
        RestrictedCharacterStringType restrictedCharacterStringType = (RestrictedCharacterStringType)theEObject;
        T result = caseRestrictedCharacterStringType(restrictedCharacterStringType);
        if (result == null) result = caseCharacterStringType(restrictedCharacterStringType);
        if (result == null) result = caseSimpleType(restrictedCharacterStringType);
        if (result == null) result = caseBuiltinType(restrictedCharacterStringType);
        if (result == null) result = caseType(restrictedCharacterStringType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.BMP_STRING:
      {
        BMPString bmpString = (BMPString)theEObject;
        T result = caseBMPString(bmpString);
        if (result == null) result = caseRestrictedCharacterStringType(bmpString);
        if (result == null) result = caseCharacterStringType(bmpString);
        if (result == null) result = caseSimpleType(bmpString);
        if (result == null) result = caseBuiltinType(bmpString);
        if (result == null) result = caseType(bmpString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.GENERAL_STRING:
      {
        GeneralString generalString = (GeneralString)theEObject;
        T result = caseGeneralString(generalString);
        if (result == null) result = caseRestrictedCharacterStringType(generalString);
        if (result == null) result = caseCharacterStringType(generalString);
        if (result == null) result = caseSimpleType(generalString);
        if (result == null) result = caseBuiltinType(generalString);
        if (result == null) result = caseType(generalString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.GRAPHIC_STRING:
      {
        GraphicString graphicString = (GraphicString)theEObject;
        T result = caseGraphicString(graphicString);
        if (result == null) result = caseRestrictedCharacterStringType(graphicString);
        if (result == null) result = caseCharacterStringType(graphicString);
        if (result == null) result = caseSimpleType(graphicString);
        if (result == null) result = caseBuiltinType(graphicString);
        if (result == null) result = caseType(graphicString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.IA5_STRING:
      {
        IA5String ia5String = (IA5String)theEObject;
        T result = caseIA5String(ia5String);
        if (result == null) result = caseRestrictedCharacterStringType(ia5String);
        if (result == null) result = caseCharacterStringType(ia5String);
        if (result == null) result = caseSimpleType(ia5String);
        if (result == null) result = caseBuiltinType(ia5String);
        if (result == null) result = caseType(ia5String);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ISO646_STRING:
      {
        ISO646String iso646String = (ISO646String)theEObject;
        T result = caseISO646String(iso646String);
        if (result == null) result = caseRestrictedCharacterStringType(iso646String);
        if (result == null) result = caseCharacterStringType(iso646String);
        if (result == null) result = caseSimpleType(iso646String);
        if (result == null) result = caseBuiltinType(iso646String);
        if (result == null) result = caseType(iso646String);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.NUMERIC_STRING:
      {
        NumericString numericString = (NumericString)theEObject;
        T result = caseNumericString(numericString);
        if (result == null) result = caseRestrictedCharacterStringType(numericString);
        if (result == null) result = caseCharacterStringType(numericString);
        if (result == null) result = caseSimpleType(numericString);
        if (result == null) result = caseBuiltinType(numericString);
        if (result == null) result = caseType(numericString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.PRINTABLE_STRING:
      {
        PrintableString printableString = (PrintableString)theEObject;
        T result = casePrintableString(printableString);
        if (result == null) result = caseRestrictedCharacterStringType(printableString);
        if (result == null) result = caseCharacterStringType(printableString);
        if (result == null) result = caseSimpleType(printableString);
        if (result == null) result = caseBuiltinType(printableString);
        if (result == null) result = caseType(printableString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.TELETEX_STRING:
      {
        TeletexString teletexString = (TeletexString)theEObject;
        T result = caseTeletexString(teletexString);
        if (result == null) result = caseRestrictedCharacterStringType(teletexString);
        if (result == null) result = caseCharacterStringType(teletexString);
        if (result == null) result = caseSimpleType(teletexString);
        if (result == null) result = caseBuiltinType(teletexString);
        if (result == null) result = caseType(teletexString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.T61_STRING:
      {
        T61String t61String = (T61String)theEObject;
        T result = caseT61String(t61String);
        if (result == null) result = caseRestrictedCharacterStringType(t61String);
        if (result == null) result = caseCharacterStringType(t61String);
        if (result == null) result = caseSimpleType(t61String);
        if (result == null) result = caseBuiltinType(t61String);
        if (result == null) result = caseType(t61String);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.UNIVERSAL_STRING:
      {
        UniversalString universalString = (UniversalString)theEObject;
        T result = caseUniversalString(universalString);
        if (result == null) result = caseRestrictedCharacterStringType(universalString);
        if (result == null) result = caseCharacterStringType(universalString);
        if (result == null) result = caseSimpleType(universalString);
        if (result == null) result = caseBuiltinType(universalString);
        if (result == null) result = caseType(universalString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.UTF8_STRING:
      {
        UTF8String utf8String = (UTF8String)theEObject;
        T result = caseUTF8String(utf8String);
        if (result == null) result = caseRestrictedCharacterStringType(utf8String);
        if (result == null) result = caseCharacterStringType(utf8String);
        if (result == null) result = caseSimpleType(utf8String);
        if (result == null) result = caseBuiltinType(utf8String);
        if (result == null) result = caseType(utf8String);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.VIDEOTEX_STRING:
      {
        VideotexString videotexString = (VideotexString)theEObject;
        T result = caseVideotexString(videotexString);
        if (result == null) result = caseRestrictedCharacterStringType(videotexString);
        if (result == null) result = caseCharacterStringType(videotexString);
        if (result == null) result = caseSimpleType(videotexString);
        if (result == null) result = caseBuiltinType(videotexString);
        if (result == null) result = caseType(videotexString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.VISIBLE_STRING:
      {
        VisibleString visibleString = (VisibleString)theEObject;
        T result = caseVisibleString(visibleString);
        if (result == null) result = caseRestrictedCharacterStringType(visibleString);
        if (result == null) result = caseCharacterStringType(visibleString);
        if (result == null) result = caseSimpleType(visibleString);
        if (result == null) result = caseBuiltinType(visibleString);
        if (result == null) result = caseType(visibleString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.RESTRICTED_CHARACTER_STRING_VALUE:
      {
        RestrictedCharacterStringValue restrictedCharacterStringValue = (RestrictedCharacterStringValue)theEObject;
        T result = caseRestrictedCharacterStringValue(restrictedCharacterStringValue);
        if (result == null) result = caseCharacterStringValue(restrictedCharacterStringValue);
        if (result == null) result = caseValueRangeValue(restrictedCharacterStringValue);
        if (result == null) result = caseSimpleValue(restrictedCharacterStringValue);
        if (result == null) result = caseBuiltinValue(restrictedCharacterStringValue);
        if (result == null) result = caseValue(restrictedCharacterStringValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.UNRESTRICTED_CHARACTER_STRING_TYPE:
      {
        UnrestrictedCharacterStringType unrestrictedCharacterStringType = (UnrestrictedCharacterStringType)theEObject;
        T result = caseUnrestrictedCharacterStringType(unrestrictedCharacterStringType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.USEFUL_TYPE:
      {
        UsefulType usefulType = (UsefulType)theEObject;
        T result = caseUsefulType(usefulType);
        if (result == null) result = caseReferencedType(usefulType);
        if (result == null) result = caseType(usefulType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CONSTRAINT:
      {
        Constraint constraint = (Constraint)theEObject;
        T result = caseConstraint(constraint);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CONSTRAINT_SPEC:
      {
        ConstraintSpec constraintSpec = (ConstraintSpec)theEObject;
        T result = caseConstraintSpec(constraintSpec);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SUBTYPE_CONSTRAINT:
      {
        SubtypeConstraint subtypeConstraint = (SubtypeConstraint)theEObject;
        T result = caseSubtypeConstraint(subtypeConstraint);
        if (result == null) result = caseConstraintSpec(subtypeConstraint);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ELEMENT_SET_SPECS:
      {
        ElementSetSpecs elementSetSpecs = (ElementSetSpecs)theEObject;
        T result = caseElementSetSpecs(elementSetSpecs);
        if (result == null) result = caseSubtypeConstraint(elementSetSpecs);
        if (result == null) result = caseConstraintSpec(elementSetSpecs);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ELEMENT_SET_SPEC:
      {
        ElementSetSpec elementSetSpec = (ElementSetSpec)theEObject;
        T result = caseElementSetSpec(elementSetSpec);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.UNIONS:
      {
        Unions unions = (Unions)theEObject;
        T result = caseUnions(unions);
        if (result == null) result = caseElementSetSpec(unions);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.INTERSECTIONS:
      {
        Intersections intersections = (Intersections)theEObject;
        T result = caseIntersections(intersections);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.INTERSECTION_ELEMENTS:
      {
        IntersectionElements intersectionElements = (IntersectionElements)theEObject;
        T result = caseIntersectionElements(intersectionElements);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXCLUSIONS:
      {
        Exclusions exclusions = (Exclusions)theEObject;
        T result = caseExclusions(exclusions);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.ELEMENTS:
      {
        Elements elements = (Elements)theEObject;
        T result = caseElements(elements);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SUBTYPE_ELEMENTS:
      {
        SubtypeElements subtypeElements = (SubtypeElements)theEObject;
        T result = caseSubtypeElements(subtypeElements);
        if (result == null) result = caseElements(subtypeElements);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SINGLE_VALUE:
      {
        SingleValue singleValue = (SingleValue)theEObject;
        T result = caseSingleValue(singleValue);
        if (result == null) result = caseSubtypeElements(singleValue);
        if (result == null) result = caseElements(singleValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CONTAINED_SUBTYPE:
      {
        ContainedSubtype containedSubtype = (ContainedSubtype)theEObject;
        T result = caseContainedSubtype(containedSubtype);
        if (result == null) result = caseSubtypeElements(containedSubtype);
        if (result == null) result = caseElements(containedSubtype);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.VALUE_RANGE:
      {
        ValueRange valueRange = (ValueRange)theEObject;
        T result = caseValueRange(valueRange);
        if (result == null) result = caseSubtypeElements(valueRange);
        if (result == null) result = caseElements(valueRange);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.LOWER_ENDPOINT:
      {
        LowerEndpoint lowerEndpoint = (LowerEndpoint)theEObject;
        T result = caseLowerEndpoint(lowerEndpoint);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.UPPER_ENDPOINT:
      {
        UpperEndpoint upperEndpoint = (UpperEndpoint)theEObject;
        T result = caseUpperEndpoint(upperEndpoint);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.LOWER_END_VALUE:
      {
        LowerEndValue lowerEndValue = (LowerEndValue)theEObject;
        T result = caseLowerEndValue(lowerEndValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.UPPER_END_VALUE:
      {
        UpperEndValue upperEndValue = (UpperEndValue)theEObject;
        T result = caseUpperEndValue(upperEndValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.SIZE_CONSTRAINT:
      {
        SizeConstraint sizeConstraint = (SizeConstraint)theEObject;
        T result = caseSizeConstraint(sizeConstraint);
        if (result == null) result = caseSubtypeElements(sizeConstraint);
        if (result == null) result = caseElements(sizeConstraint);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.TYPE_CONSTRAINT:
      {
        TypeConstraint typeConstraint = (TypeConstraint)theEObject;
        T result = caseTypeConstraint(typeConstraint);
        if (result == null) result = caseSubtypeElements(typeConstraint);
        if (result == null) result = caseElements(typeConstraint);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.PERMITTED_ALPHABET:
      {
        PermittedAlphabet permittedAlphabet = (PermittedAlphabet)theEObject;
        T result = casePermittedAlphabet(permittedAlphabet);
        if (result == null) result = caseSubtypeElements(permittedAlphabet);
        if (result == null) result = caseElements(permittedAlphabet);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.VALUE_RANGE_VALUE:
      {
        ValueRangeValue valueRangeValue = (ValueRangeValue)theEObject;
        T result = caseValueRangeValue(valueRangeValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXCEPTION_SPEC:
      {
        ExceptionSpec exceptionSpec = (ExceptionSpec)theEObject;
        T result = caseExceptionSpec(exceptionSpec);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.EXCEPTION_IDENTIFICATION:
      {
        ExceptionIdentification exceptionIdentification = (ExceptionIdentification)theEObject;
        T result = caseExceptionIdentification(exceptionIdentification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Asn1Package.CSTRING:
      {
        CString cString = (CString)theEObject;
        T result = caseCString(cString);
        if (result == null) result = caseRestrictedCharacterStringValue(cString);
        if (result == null) result = caseCharacterStringValue(cString);
        if (result == null) result = caseValueRangeValue(cString);
        if (result == null) result = caseSimpleValue(cString);
        if (result == null) result = caseBuiltinValue(cString);
        if (result == null) result = caseValue(cString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Asn1</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Asn1</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAsn1(Asn1 object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Module Definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Module Definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseModuleDefinition(ModuleDefinition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Module Identifier</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Module Identifier</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseModuleIdentifier(ModuleIdentifier object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Encoding Reference Default</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Encoding Reference Default</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEncodingReferenceDefault(EncodingReferenceDefault object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Module Body</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Module Body</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseModuleBody(ModuleBody object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Exports</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Exports</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExports(Exports object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Imports</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Imports</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseImports(Imports object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Defined Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Defined Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDefinedType(DefinedType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Defined Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Defined Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDefinedValue(DefinedValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Assignment</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Assignment</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAssignment(Assignment object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Type Assignment</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Type Assignment</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTypeAssignment(TypeAssignment object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Value Assignment</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Value Assignment</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseValueAssignment(ValueAssignment object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Simple Value Assignment</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Simple Value Assignment</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSimpleValueAssignment(SimpleValueAssignment object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Choice Value Assignment</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Choice Value Assignment</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseChoiceValueAssignment(ChoiceValueAssignment object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Object Identifier Value Assignment</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Object Identifier Value Assignment</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseObjectIdentifierValueAssignment(ObjectIdentifierValueAssignment object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Sequence Value Assignment</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Sequence Value Assignment</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSequenceValueAssignment(SequenceValueAssignment object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseType(Type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Builtin Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Builtin Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBuiltinType(BuiltinType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Simple Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Simple Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSimpleType(SimpleType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Container Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Container Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseContainerType(ContainerType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Referenced Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Referenced Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseReferencedType(ReferencedType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Named Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Named Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamedType(NamedType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseValue(Value object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Builtin Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Builtin Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBuiltinValue(BuiltinValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Simple Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Simple Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSimpleValue(SimpleValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Container Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Container Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseContainerValue(ContainerValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Referenced Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Referenced Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseReferencedValue(ReferencedValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Named Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Named Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamedValue(NamedValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Boolean Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Boolean Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBooleanType(BooleanType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Boolean Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Boolean Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBooleanValue(BooleanValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Integer Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Integer Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIntegerType(IntegerType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Named Number</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Named Number</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamedNumber(NamedNumber object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Integer Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Integer Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIntegerValue(IntegerValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Enumerated Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Enumerated Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEnumeratedType(EnumeratedType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Enumeration Item</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Enumeration Item</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEnumerationItem(EnumerationItem object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Real Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Real Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRealType(RealType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Real Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Real Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRealValue(RealValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Numeric Real Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Numeric Real Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNumericRealValue(NumericRealValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Real Sequence Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Real Sequence Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRealSequenceValue(RealSequenceValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Special Real Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Special Real Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSpecialRealValue(SpecialRealValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Bit String Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Bit String Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBitStringType(BitStringType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Named Bit</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Named Bit</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamedBit(NamedBit object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Bit String Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Bit String Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBitStringValue(BitStringValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Octet String Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Octet String Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOctetStringType(OctetStringType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Octet String Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Octet String Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOctetStringValue(OctetStringValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Null Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Null Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNullType(NullType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Null Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Null Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNullValue(NullValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Sequence Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Sequence Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSequenceType(SequenceType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Extension And Exception</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Extension And Exception</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExtensionAndException(ExtensionAndException object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Extension Additions</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Extension Additions</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExtensionAdditions(ExtensionAdditions object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Component Type List</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Component Type List</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComponentTypeList(ComponentTypeList object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Version Number</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Version Number</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseVersionNumber(VersionNumber object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Extension Addition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Extension Addition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExtensionAddition(ExtensionAddition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Extension Addition Group</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Extension Addition Group</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExtensionAdditionGroup(ExtensionAdditionGroup object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Component Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Component Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComponentType(ComponentType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Named Component Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Named Component Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamedComponentType(NamedComponentType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Component Of Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Component Of Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComponentOfType(ComponentOfType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Any Defined Named Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Any Defined Named Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAnyDefinedNamedType(AnyDefinedNamedType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Sequence Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Sequence Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSequenceValue(SequenceValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Component Value List</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Component Value List</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComponentValueList(ComponentValueList object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Sequence Of Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Sequence Of Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSequenceOfType(SequenceOfType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Set Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Set Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSetType(SetType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Set Of Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Set Of Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSetOfType(SetOfType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Choice Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Choice Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseChoiceType(ChoiceType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Alternative Type List</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Alternative Type List</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAlternativeTypeList(AlternativeTypeList object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Extension Addition Alternatives Group</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Extension Addition Alternatives Group</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExtensionAdditionAlternativesGroup(ExtensionAdditionAlternativesGroup object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Extension Addition Alternative</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Extension Addition Alternative</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExtensionAdditionAlternative(ExtensionAdditionAlternative object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Extension Addition Alternatives List</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Extension Addition Alternatives List</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExtensionAdditionAlternativesList(ExtensionAdditionAlternativesList object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Choice Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Choice Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseChoiceValue(ChoiceValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Prefixed Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Prefixed Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePrefixedType(PrefixedType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Tagged Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Tagged Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTaggedType(TaggedType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Tag</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Tag</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTag(Tag object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Class Number</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Class Number</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseClassNumber(ClassNumber object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Object Identifier Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Object Identifier Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseObjectIdentifierType(ObjectIdentifierType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Object Identifier Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Object Identifier Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseObjectIdentifierValue(ObjectIdentifierValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Obj Id Components</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Obj Id Components</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseObjIdComponents(ObjIdComponents object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Time Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Time Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTimeType(TimeType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Date Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Date Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDateType(DateType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Time Of Day Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Time Of Day Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTimeOfDayType(TimeOfDayType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Date Time Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Date Time Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDateTimeType(DateTimeType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Duration Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Duration Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDurationType(DurationType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Character String Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Character String Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCharacterStringType(CharacterStringType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Character String Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Character String Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCharacterStringValue(CharacterStringValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Restricted Character String Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Restricted Character String Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRestrictedCharacterStringType(RestrictedCharacterStringType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>BMP String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>BMP String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBMPString(BMPString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>General String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>General String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseGeneralString(GeneralString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Graphic String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Graphic String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseGraphicString(GraphicString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>IA5 String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>IA5 String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIA5String(IA5String object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>ISO646 String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>ISO646 String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseISO646String(ISO646String object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Numeric String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Numeric String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNumericString(NumericString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Printable String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Printable String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePrintableString(PrintableString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Teletex String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Teletex String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTeletexString(TeletexString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>T61 String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>T61 String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseT61String(T61String object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Universal String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Universal String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUniversalString(UniversalString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>UTF8 String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>UTF8 String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUTF8String(UTF8String object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Videotex String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Videotex String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseVideotexString(VideotexString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Visible String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Visible String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseVisibleString(VisibleString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Restricted Character String Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Restricted Character String Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRestrictedCharacterStringValue(RestrictedCharacterStringValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Unrestricted Character String Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Unrestricted Character String Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnrestrictedCharacterStringType(UnrestrictedCharacterStringType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Useful Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Useful Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUsefulType(UsefulType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Constraint</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Constraint</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstraint(Constraint object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Constraint Spec</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Constraint Spec</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstraintSpec(ConstraintSpec object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Subtype Constraint</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Subtype Constraint</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSubtypeConstraint(SubtypeConstraint object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Element Set Specs</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Element Set Specs</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseElementSetSpecs(ElementSetSpecs object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Element Set Spec</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Element Set Spec</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseElementSetSpec(ElementSetSpec object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Unions</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Unions</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnions(Unions object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Intersections</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Intersections</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIntersections(Intersections object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Intersection Elements</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Intersection Elements</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIntersectionElements(IntersectionElements object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Exclusions</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Exclusions</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExclusions(Exclusions object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Elements</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Elements</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseElements(Elements object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Subtype Elements</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Subtype Elements</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSubtypeElements(SubtypeElements object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Single Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Single Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSingleValue(SingleValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Contained Subtype</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Contained Subtype</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseContainedSubtype(ContainedSubtype object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Value Range</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Value Range</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseValueRange(ValueRange object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Lower Endpoint</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Lower Endpoint</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLowerEndpoint(LowerEndpoint object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Upper Endpoint</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Upper Endpoint</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUpperEndpoint(UpperEndpoint object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Lower End Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Lower End Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLowerEndValue(LowerEndValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Upper End Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Upper End Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUpperEndValue(UpperEndValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Size Constraint</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Size Constraint</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSizeConstraint(SizeConstraint object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Type Constraint</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Type Constraint</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTypeConstraint(TypeConstraint object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Permitted Alphabet</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Permitted Alphabet</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePermittedAlphabet(PermittedAlphabet object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Value Range Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Value Range Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseValueRangeValue(ValueRangeValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Exception Spec</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Exception Spec</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExceptionSpec(ExceptionSpec object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Exception Identification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Exception Identification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExceptionIdentification(ExceptionIdentification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>CString</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>CString</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCString(CString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //Asn1Switch
